package com.szrt.ms.manager;

import java.util.Scanner;

import com.szrt.ms.entity.StudentEntity;

/**
 * StudentManager  等同于 一个班级
 * 
 * 总结：如何对数组进行初始化
 * 		1：最简单的是
 * 			1.1 先提供1个学生数组 private StudentEntity[] studentArray
 * 			1.2 在构造方法中进行具体的初始化 studentArray = new StudentEntity[length];
 *
 */
public class BanJi1612 {
	
	
	//学生的数组  ： 抽象化   对象数组
	private StudentEntity[] studentArray;
	
	
	
	




	/**
	 * 伪代码
	 * 得到学生数组中的最高分
	 * @return
	 */
	public double  getMaxScore(){
		
		//1 遍历学生数组
		
		//2 暂时让第1个学生的成绩为最高分 max
		double max= studentArray[0].getScore();
		for(int index =1; index<studentArray.length;index++){
			
			//3 取得学生的成绩   
			StudentEntity stu = studentArray[index];
			double score = stu.getScore();
			
			//4   然后从第2个学生开始依次跟max
			if(score>max){
				//5 如果第2个学生的成绩比max的要大。把第2个学生的成绩赋值给max
				max= score;
			}
		}
		return max;
	}
	
	
	public StudentEntity  getStudentMaxScore(){
		
		//1 遍历学生数组
		
		//2 暂时让第1个学生的成绩为最高分 max
		
		StudentEntity stu0 = studentArray[0];
		double max= stu0.getScore();
		for(int index =1; index<studentArray.length;index++){
			
			//3 取得学生的成绩   
			StudentEntity stu = studentArray[index];
			double score = stu.getScore();
			
			//4   然后从第2个学生开始依次跟max
			if(score>max){
				
				//需要1个中间变量
				StudentEntity temp =null;
				temp= stu;
				stu=stu0;
				stu0=temp;
			}
		}
		return stu0;
	}
	
	
	
	/**
	 * 初始化1个数组   给这个数组分配内存空间 但是这时候这个数组中放的东东 都是 null 
	 * @param length
	 */
	public BanJi1612(int length ){
		studentArray = new StudentEntity[length];
	}
	
	
	@SuppressWarnings("resource")
	public void initStudentArray(int len){
		
		//cg 动态生成...
		//StudentEntity cg = new StudentEntity();
		
		Scanner sc = new Scanner(System.in);
		
		int index =0;
		while(true){
			System.out.println("请输入第"+(index+1)+"要添加的学生的姓名 如果要退出请输入 exit");
			String name = sc.next();
			if(name.equals("exit")){
				break;
			}
			//cg.setName(name);
			
			
			System.out.println("请输入第"+(index+1)+"要添加的学生的分数");
			double score = sc.nextDouble();
			//cg.setScore(score);
			
			add(name,score);
			index++;
		}
		//sc.close();
		
		System.out.println("看学生数组的情况....");
	}
	
	
	
	public StudentEntity[] getStudentArray() {
		return studentArray;
	}

	
	/**
	 * 增加1个学生
	 * @param lyh 表示1个具体的学生
	 */
	public void  add(String name,double score){
		
		StudentEntity lyh = new StudentEntity();
		lyh.setName(name);
		lyh.setScore(score);
		// counter作为1个计算器  刚好对应数组的下标所以从0开始
		int counter =0;
		
		
		//找到数组中现在有多少个学生? 原因 要添加的学生只能加到原来的学生的后面 
		for(int index =0; index<studentArray.length;index++){
			
			StudentEntity cg =studentArray[index];
			
			if(cg != null){
				counter = counter+1;
			}
		}
		
		
		
		//保存的是班级里面一共最多可以放多少个学生
		int length =studentArray.length; //10
		
		//增加1个判断  看 0<=counter <=9 数组的下标是从0开始      counter<=studentArray.length-1
		if(counter<=length-1){
			studentArray[counter]=lyh;
			System.out.println("第"+(counter+1)+"学生"+lyh+"添加成功...");
		}else{
			System.err.println("第"+(counter+1)+"学生"+lyh+"添加失败...班级人数已经满了。请去下一个班...");
		}
		
	}
	
	
	public void  update(String zp,double scoreNew){
		//0 修改哪个数组  没有数据不能修改  studentArray
		for(int index =0; index<studentArray.length;index++){
			StudentEntity stu = studentArray[index];
			
			if(stu != null){
				//1 遍历数组 找到与zp名字相同的对象  
				String name = stu.getName();
				if(name.equals(zp)){
					//2 修改成绩=scoreNew
					stu.setScore(scoreNew);
					break;
				}
			}
			
		}
	}
	

}
